﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CRUD.DAO;
using CapaGestion.Spring;
using GestionadorBaseDatos;
using System.Web.UI.MobileControls;
using CapaNegocios;

public partial class InterfazKamalde_MiCuentaFormasPago : Base
{
    IGestionPago gestionarPago = AdministradorGestion.getGestionarPago();
    Usuario usuarioConectado;
    IGestionFormaPago gestionarFormaPago = AdministradorGestion.getGestionarFormaPago();
    List<Pago> listaPagos;
    IGestionMantenimientoPago gestiorMantenimientoPago = AdministradorGestion.getGestionarMantenimientoPago();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            infoPagos.Items.Clear();

            if (opcionesFormasPago.SelectedItem.Value == "1")
            {
                Boton.Text = "Registrar";
                monto.Text = " ";
                IList listaFormasPagoRegistro = FormasPagoRegistro();

                foreach (FormaPago formaPago in listaFormasPagoRegistro)
                {
                    infoPagos.Items.Add(formaPago.Nombre);
                }
            }


        }
 
    }

    public void EjecutarAccion(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        usuarioConectado = (Usuario)Session["login"];
        if (Boton.Text == "Registrar")
        {
            FormaPago formaPagoRegistrar = gestionarFormaPago.GetByNombre(infoPagos.SelectedItem.Text);
            Pago pagoRegistrar = new Pago();

            pagoRegistrar.FormaPagoAsociado = formaPagoRegistrar;

            pagoRegistrar.MontoMaximo = int.Parse(monto.Text);

            pagoRegistrar.UsuarioAsociado = usuarioConectado;

            pagoRegistrar.Estatus = "ACTIVO";

            gestionarPago.InsertarPago(pagoRegistrar);

            infoPagos.Items.Clear();

            IList listaFormasPagoRegistro = FormasPagoRegistro();

                foreach (FormaPago formaPago in listaFormasPagoRegistro)
                {
                    infoPagos.Items.Add(formaPago.Nombre);
                }

            //Response.Redirect("AdministradorFormasPago.aspx");


        }
        else
        {
            if (Boton.Text == "Modificar")
            {
                

                int montoViejo = 0;

                listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);




                Pago pagoModificar = new Pago();
                FormaPago formaPagoModificar = gestionarFormaPago.GetByNombre(infoPagos.SelectedItem.Text);

                foreach (Pago pago in listaPagos)
                {
                    if (pago.FormaPagoAsociado.IdFormaPago == formaPagoModificar.IdFormaPago)
                    {
                        montoViejo = pago.MontoMaximo;
                    }
                }

                if (montoViejo != int.Parse(monto.Text))
                {
                    MantenimientoPago pagoManten = new MantenimientoPago();
                    pagoManten.FechaMantenimientoP = DateTime.Now;
                    pagoManten.FormaPagoMantenimiento = formaPagoModificar;
                    pagoManten.UsuarioAsociado = usuarioConectado;
                    pagoManten.DescripcionMantenimientoP = "Monto actualizado: " + monto.Text;
                    gestiorMantenimientoPago.InsertarMantenimientoPago(pagoManten);
                }

                pagoModificar.FormaPagoAsociado = formaPagoModificar;

                pagoModificar.UsuarioAsociado = usuarioConectado;

                pagoModificar.MontoMaximo = int.Parse(monto.Text);



                //listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);

                //for (int i = 0; i < listaPagos.Count; i++)
                //{
                //    infoPagos.Items.Add(listaPagos[i].FormaPagoAsociado.Nombre);
                //}

                gestionarPago.ActualizarPago(pagoModificar);

                


                //Response.Redirect("AdministradorFormasPago.aspx");
                
            }
        }
    }

    public void InfoFormaPago(object sender, EventArgs e)
    {
        
        usuarioConectado = (Usuario)Session["login"];
        List<Pago> listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);
        for (int j = 0; j < infoPagos.Items.Count; j++)
        {
            if (infoPagos.Items[j].Selected)
            {


                string opcion = infoPagos.Items[j].Text;


                for (int i = 0; i < listaPagos.Count; i++)
                {
                    if (opcion == listaPagos[i].FormaPagoAsociado.Nombre)
                    {
                        monto.Text = listaPagos[i].MontoMaximo.ToString();
                    }
                }
            }
        }
    }
    public void actualizarDatos(object sender, EventArgs e)
    {
        infoPagos.Items.Clear();
        monto.Text = " ";
        gestionarFormaPago = AdministradorGestion.getGestionarFormaPago();
        IList listaFormasPagos = gestionarFormaPago.GetAll();
        usuarioConectado = (Usuario)Session["login"];
        if (opcionesFormasPago.SelectedItem.Value == "1")
        {
            Boton.Text = "Registrar";
            IList listaFormasPagoRegistro = FormasPagoRegistro();

            foreach (FormaPago formaPago in listaFormasPagoRegistro)
            {
                infoPagos.Items.Add(formaPago.Nombre);
            }
        }
        else
        {
            if (opcionesFormasPago.SelectedItem.Value == "2")
            {
                Boton.Text = "Modificar";
                listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);

                for (int i = 0; i < listaPagos.Count; i++)
                {
                    infoPagos.Items.Add(listaPagos[i].FormaPagoAsociado.Nombre);
                }




            }
            else
            {
                if (opcionesFormasPago.SelectedItem.Value == "3")
                {
                    Boton.Text = "Cancelar";
                    listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);

                    for (int i = 0; i < listaPagos.Count; i++)
                    {
                        infoPagos.Items.Add(listaPagos[i].FormaPagoAsociado.Nombre);
                    }

                }
            }
        }
    }

    public IList FormasPagoRegistro()
    {
        usuarioConectado = (Usuario)Session["login"];
        List<FormaPago> listaFormaPagosNueva = new List<FormaPago>();
        int count = 0;
        gestionarFormaPago = AdministradorGestion.getGestionarFormaPago();
        gestionarPago = AdministradorGestion.getGestionarPago();

        List<Pago> listaPagos = gestionarPago.ObtenerPagosPorUsuario(usuarioConectado);

        IList listaFormaPagos = gestionarFormaPago.GetAll();




        foreach (FormaPago formaPago in listaFormaPagos)
        {
            count = 0;
            for (int i = 0; i < listaPagos.Count; i++)
            {
                if (formaPago.Nombre == listaPagos[i].FormaPagoAsociado.Nombre)
                {
                    count++;
                }

            }

            if (count == 0)
            {
                listaFormaPagosNueva.Add(formaPago);
            }

        }
        return listaFormaPagosNueva;

    }







   
}
